home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc19 / gemfsc19.lzh / GEMFUNCS / APLMALLO.C < prev    next >
C/C++ Source or Header  |  1993-03-20  |  1KB  |  58 lines

  1. /**************************************************************************
  2.  * APLMALLO.C - Internal service routines apl_malloc(), apl_free().
  3.  *
  4.  *    All memory allocation done by GemFast internals goes through these
  5.  *    routines.  By default, the standard runtime lib allocator is used.
  6.  *************************************************************************/
  7.  
  8. #include "gemfintl.h"
  9. #include <stdlib.h>
  10.  
  11. #if defined(LATTICE) || defined(__GNUC__) || defined(__TURBCOC__)
  12.   #define DefaultAllocate(size)   malloc(size)
  13.   #define DefaultRelease(block)   free(block)
  14. #else
  15.   #define DefaultAllocate(size)   lalloc(size)
  16.   #define DefaultRelease(size)      free(size)
  17. #endif
  18.  
  19. typedef void * (VPFUNC) __PROTO((unsigned long));
  20. typedef void   (VFUNC)    __PROTO((void *));
  21.  
  22. static VPFUNC *allocator = NULL;
  23. static VFUNC  *releaser  = NULL;
  24.  
  25. void *apl_malloc(size)
  26.     unsigned long size;
  27. {
  28.     if (allocator) {
  29.         return (*allocator)(size);
  30.     } else {
  31.         return DefaultAllocate(size);
  32.     }
  33. }
  34.  
  35. void apl_free(block)
  36.     void *block;
  37. {
  38.     if (block) {
  39.         if (releaser) {
  40.             (*releaser)(block);
  41.         } else {
  42.             DefaultRelease(block);
  43.         }
  44.     }
  45. }
  46.  
  47. void apl_mmvectors(newalloc, newrelease)
  48.     void *newalloc;
  49.     void *newrelease;
  50. {
  51.     if (newalloc && newrelease) {
  52.         allocator = (VPFUNC *)newalloc;
  53.         releaser  = (VFUNC *)newrelease;
  54.     }
  55. }
  56.  
  57.  
  58.